<?php
/**
 * Created by PhpStorm.
 * Author: ljz
 * Date: 2023/5/10
 * Time: 18:41
 */

namespace App\backend\models;


use App\common\models\BaseModel;
use Illuminate\Support\Facades\DB;

/**
 * Class OrderModel
 * @package app\common\models
 */
class GoodSupportModel extends BaseModel
{
    const table = 'goods_support';
    const status = 0;

    public function __construct() {

    }

    /**
     * 查询字段规则
     *
     * @return array
     */
    static public function rules()
    {
        return [];
    }

    /**
     * 添加/编辑 字段规则
     *
     * @return array
     */
    static public function modify_rules()
    {
        return [
            'name' => 'required|string|max:255', // 商品支持名称
            'desc' => 'required|string|max:512', // 概述
            'display_order' => 'int', // 排序
        ];
    }

    /**
     * 删除 字段规则
     *
     * @return array
     */
    static public function updated_rules()
    {
        return [
            'support_id' => 'required|int', // 商品支持ID
            'status' => 'required|int', // 商品支持状态：1已删除 0未删除
        ];
    }

    /**
     * 详情 字段规则
     *
     * @return array
     */
    static public function info_rules()
    {
        return [
            'support_id' => 'required|int', // 商品支持ID
        ];
    }

    /**
     * 字段验证返回错误信息
     *
     * @return array
     */
    static public function message()
    {
        return [
            'support_id.required' => '商品支持ID不能为空',
            'support_id.int' => '商品支持ID数据类型有误',
            'name.required' => '商品支持名称不能为空',
            'name.max' => '商品支持名称长度超过最大限制',
            'desc.required' => '概述不能为空',
            'desc.max' => '概述长度超过最大限制',
            'display_order.int' => '商品支持排序数据类型有误',
            'status.required' => '商品支持状态不能为空',
            'status.int' => '商品支持状态数据类型有误',
        ];
    }

    /**
     * 数据库 - 查询商品支持列表
     * @param $string string //数组
     * @return array
     */
    static public function in_arr($string = '')
    {
        $in_arr = explode(",", $string);
        $data = DB::table(self::table)
            ->select('id', 'name')
            ->where('status', '=',self::status)
            ->whereIn('id', $in_arr)
            ->get();
        return $data;
    }

    /**
     * 数据库 - 查询商品列表
     * @param $page string //分页页数
     * @param $limit string //分页条数
     * @param $where_in_data array //in 查询条件 参数数组
     * @param $where_data array //查询条件 参数数组
     * @return array
     */
    static public function listed($page, $limit, $where_data = [], $where_in_data = [])
    {
        $query = DB::table(self::table)
            ->select('id', 'name', 'desc', 'display_order', 'created_at')
            ->where('status', '=',self::status)
            ->where($where_data);

        if (!empty($where_in_data)) {
            $query->whereIn('id', $where_in_data);
        }

        $data = $query->apiPaginate($limit, ['*'], 'page', $page)->toArray();
        return $data;
    }

    /**
     * 数据库 - 更新数据
     * @param $where_data   //商品ID
     * @param $data //参数数组
     * @return array
     */
    static public function updatedData($where_data, $data)
    {
        $data = DB::table(self::table)->where($where_data)->update($data);
        return $data;
    }

    /**
     * 数据库 - 插入数据 获取ID
     * @param $data //参数数组
     * @return array
     */
    static public function insertGetIdData($data)
    {
        $data = DB::table(self::table)->insertGetId($data);
        return $data;
    }

    /**
     * 数据库 - 插入数据
     * @param $data //参数数组
     * @return array
     */
    static public function insertData($data)
    {
        $data = DB::table(self::table)->insert($data);
        return $data;
    }

    /**
     * 数据库 - 查询商品支持详情
     * @param $where_data array //查询条件 参数数组
     * @param $select_data array //查询条件 参数数组
     * @return array
     */
    static public function info($where_data = [], $select_data = [])
    {
        $data = DB::table(self::table)
            ->select($select_data)
            ->where($where_data)
            ->where('status', '=',self::status)
            ->first();

        return $data;
    }

}
